#ifndef __BHTTP_RESPONSE_H__
#define __BHTTP_RESPONSE_H__
#pragma once

#include <string>
#include <vector>

namespace bhttp
{
class response
{
public:
    /**
     * @brief headers HTTP Response Headers
     * @return Response Headers
     */
    std::vector<char>& headers();
    /**
     * @brief header 对应key的HTTP Header Value
     * @param key HTTP Header Key
     * @return HTTP Header Value
     */
    std::string header(const std::string& key);

    /**
     * @brief body HTTP Response Body
     * @return Response Body
     */
    std::vector<char>& body();
    /**
     * @brief body_string 字符串HTTP Response Body
     * @return Response Body
     */
    std::string body_string() const;

    /**
     * @brief code 返回HTTP CODE
     * @return HTTP CODE
     */
    long& code();

    /**
     * @brief total_msec 返回消耗总时长
     * @return 消耗总时长
     */
    double& total_msec();

    /**
     * @brief successed 设置请求是否成功
     * @param succ 请求是否成功
     * @return void
     */
    void successed(const bool succ);
    /**
     * @brief successed 请求是否成功
     * @return 请求是否成功
     */
    bool successed() const;

    /**
     * @brief error 错误详情
     * @return 错误详情
     */
    char* error();

private:
    // 是否成功
    bool successed_{ false };
    // HTTP HEADER
    std::vector<char> headers_;
    // HTTP BODY
    std::vector<char> body_;
    // HTTP CODE
    long code_{ -1 };
    // 消耗总时长
    double total_msec_{ 0 };
    // 错误详情
    char error_[256]{ 0 };
};
}

#endif //__BHTTP_RESPONSE_H__
